package com.taoyibao.hongcanting.service;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;

import com.taoyibao.hongcanting.R;

/**
 * @author TangAnna
 * @description: 音乐播放器
 * @date :${DATA} 18:53
 */
public class MusicService extends Service implements MediaPlayer.OnCompletionListener {
    private final String TAG = "PlayMusicService";
    private MediaPlayer mPlayer;
    private boolean isPause = true;//音乐是否正在播放

    @Override
    public void onCreate() {
        super.onCreate();
        Log.d(TAG, "onCreate");
        mPlayer = MediaPlayer.create(this, R.raw.music3);
        mPlayer.setOnCompletionListener(this);
    }

    /*
     * MainActivity调用bindService后该方法回调，紧接着MainActivity的ServiceConnection的
     * onServiceConnected方法回调，onBind回调的返回值传递给onServiceConnected中的参数service
     * 从而MainActivity就可以通过Binder的getService方法获得PlayMusicService的引用，后续的音乐播放
     * 控制就简单了
     */
    public IBinder onBind(Intent intent) {
        return new MusicBinder();
    }

    public class MusicBinder extends Binder {

        public MusicService getService() {
            return MusicService.this;
        }
    }

    /**
     * 播放音乐
     */
    public void play() {
        if (isPause) {
            mPlayer.start();//继续播放
            isPause = false;
        }
//        if (mPlayer.isPlaying() && !isPause) {
//            mPlayer.pause();//暂停播放
//            isPause = true;
//        } else {
//            mPlayer.start();//继续播放
//            isPause = false;
//        }
    }

    /**
     * 暂停播放
     */
    public void stopMusic() {
        if (mPlayer.isPlaying() && !isPause) {
            mPlayer.pause();//暂停播放
            isPause = true;
        }
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        if (mPlayer.isPlaying()) {
            mPlayer.stop();//停止音频的播放
        }
        mPlayer.release();//释放资源
    }

    /**
     * 音乐播放完成回调
     *
     * @param mp
     */
    @Override
    public void onCompletion(MediaPlayer mp) {
        play();
    }
}
